package processor;

import org.apache.commons.io.filefilter.FalseFileFilter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Request;
import us.codecraft.webmagic.selector.Selectable;
import util.CookieUtil;

import java.util.List;

import static util.CrawlSleepTime.sleep;

public class LoginProcessor {
    public static Logger logger = LoggerFactory.getLogger("LoginProcessor");

    public static void loginAccount(Page page) {

        String _cycle_tried_times = page.getRequest().getExtras().getOrDefault("_cycle_tried_times","0").toString();
        logger.error("请求:"+ page.getUrl().toString() +"设置为下载失败。已失败"+_cycle_tried_times+"次。");
        // 如果使用了代理，将代理与用户名称传送到cookie池。
        if (page.getRequest().getExtra("proxy").toString().contains(":")){
            logger.error("开始检验账号:"+page.getRequest().getExtra("cookieId").toString());
            CookieUtil.invalidCookie(page.getRequest().getExtra("cookieId").toString(),
                    page.getRequest().getExtra("proxy").toString(),
                    page.getUrl().toString());

        }
    }

    public static boolean isRedirectedToLoginPage(Page page) {
        /**
         * @Description 判断是否登录页
         * @param page
         */
        String a = page.getHtml().getDocument().toString();
        List<Selectable> nodes = page.getHtml().xpath("//body/").nodes();
        if (page.getHtml().xpath("//div[@class=\"login-tab col3\"]").nodes().size() > 0) {
            logger.error("请求页面: " + page.getUrl() + " 返回到登录页。cookie失效!");
            loginAccount(page);

            return true;
        } else if (page.getHtml().getDocument().toString().contains("window.location.href='https://www.qichacha.com/index_verify?")) {

            logger.error("请求页面: " + page.getUrl() + "疑似被封禁:");
            logger.error("返回页面: " + page.getRawText());

            loginAccount(page);


            return true;

        } else if (page.getHtml().xpath("//body/").nodes().size() == 0) {
            if(page.getHtml().xpath("//head/script").nodes().size()>0){
                logger.error("请求页面: " + page.getUrl() + "返回为空2");
                loginAccount(page);
                return true;

            }else {
                logger.warn(page.getUrl() + "此接口无信息");
                return false;

            }
        } else {
            // 如果在登陆状态且没被禁 则设置该cookie为有效状态

            return false;
        }
    }
}
